home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / PInterfaces / Dialogs.p < prev    next >
Text File  |  1996-05-01  |  14KB  |  465 lines

  1. {
  2.      File:        Dialogs.p
  3.  
  4.      Contains:    Dialog Manager interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Release:    Universal Interfaces 3.0d3 on Copland DR1
  8.  
  9.      Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16.  
  17. }
  18. {$IFC UNDEFINED UsingIncludes}
  19. {$SETC UsingIncludes := 0}
  20. {$ENDC}
  21.  
  22. {$IFC NOT UsingIncludes}
  23.  UNIT Dialogs;
  24.  INTERFACE
  25. {$ENDC}
  26.  
  27. {$IFC UNDEFINED __DIALOGS__}
  28. {$SETC __DIALOGS__ := 1}
  29.  
  30. {$I+}
  31. {$SETC DialogsIncludes := UsingIncludes}
  32. {$SETC UsingIncludes := 1}
  33.  
  34. {$IFC UNDEFINED __ERRORS__}
  35. {$I Errors.p}
  36. {$ENDC}
  37. {$IFC UNDEFINED __MEMORY__}
  38. {$I Memory.p}
  39. {$ENDC}
  40. {$IFC UNDEFINED __MENUS__}
  41. {$I Menus.p}
  42. {$ENDC}
  43. {$IFC UNDEFINED __CONTROLS__}
  44. {$I Controls.p}
  45. {$ENDC}
  46. {$IFC UNDEFINED __WINDOWS__}
  47. {$I Windows.p}
  48. {$ENDC}
  49. {$IFC UNDEFINED __TEXTEDIT__}
  50. {$I TextEdit.p}
  51. {$ENDC}
  52. {$IFC UNDEFINED __EVENTS__}
  53. {$I Events.p}
  54. {$ENDC}
  55.  
  56. {$PUSH}
  57. {$ALIGN MAC68K}
  58. {$LibExport+}
  59.  
  60. {$IFC FOR_SYSTEM7_AND_SYSTEM8_DEPRECATED }
  61.  
  62. CONST
  63.     ctrlItem                    = 4;
  64.     btnCtrl                        = 0;
  65.     chkCtrl                        = 1;
  66.     radCtrl                        = 2;
  67.     resCtrl                        = 3;
  68.     statText                    = 8;
  69.     editText                    = 16;
  70.     iconItem                    = 32;
  71.     picItem                        = 64;
  72.     userItem                    = 0;
  73.     itemDisable                    = 128;
  74.     ok                            = 1;
  75.     cancel                        = 2;
  76.     stopIcon                    = 0;
  77.     noteIcon                    = 1;
  78.     cautionIcon                    = 2;
  79.  
  80.                                                                 {  new, more standard names for dialog item constants  }
  81.     kControlDialogItem            = 4;
  82.     kButtonDialogItem            = 4;
  83.     kCheckBoxDialogItem            = 5;
  84.     kRadioButtonDialogItem        = 6;
  85.     kResourceControlDialogItem    = 7;
  86.     kStaticTextDialogItem        = 8;
  87.     kEditTextDialogItem            = 16;
  88.     kIconDialogItem                = 32;
  89.     kPictureDialogItem            = 64;
  90.     kUserDialogItem                = 0;                            {  misc. constants  }
  91.     kItemDisableBit                = 128;
  92.     kStdOkItemIndex                = 1;
  93.     kStdCancelItemIndex            = 2;                            {  standard icon resource id's  }
  94.     kStopIcon                    = 0;
  95.     kNoteIcon                    = 1;
  96.     kCautionIcon                = 2;
  97.  
  98. {$IFC OLDROUTINENAMES }
  99. {
  100.  These constants lived briefly on ETO 16.  They suggest
  101.  that there is only one index you can use for the OK 
  102.  item, which is not true.  You can put the ok item 
  103.  anywhere you want in the DITL.
  104. }
  105.     kOkItemIndex                = 1;
  106.     kCancelItemIndex            = 2;
  107.  
  108. {$ENDC}
  109. {     Dialog Item List Manipulation Constants     }
  110.  
  111. TYPE
  112.     DITLMethod                            = SInt16;
  113.  
  114. CONST
  115.     overlayDITL                    = 0;
  116.     appendDITLRight                = 1;
  117.     appendDITLBottom            = 2;
  118.  
  119.  
  120. TYPE
  121.     StageList                            = SInt16;
  122.     DialogRef                            = DialogPtr;
  123.     DialogRecordPtr = ^DialogRecord;
  124.     DialogRecord = RECORD
  125.         window:                    WindowRecord;
  126.         items:                    Handle;
  127.         textH:                    TEHandle;
  128.         editField:                SInt16;
  129.         editOpen:                SInt16;
  130.         aDefItem:                SInt16;
  131.     END;
  132.  
  133.     DialogPeek                            = ^DialogRecord;
  134.     DialogTemplatePtr = ^DialogTemplate;
  135.     DialogTemplate = RECORD
  136.         boundsRect:                Rect;
  137.         procID:                    SInt16;
  138.         visible:                BOOLEAN;
  139.         filler1:                BOOLEAN;
  140.         goAwayFlag:                BOOLEAN;
  141.         filler2:                BOOLEAN;
  142.         refCon:                    SInt32;
  143.         itemsID:                SInt16;
  144.         title:                    Str255;
  145.     END;
  146.  
  147.     DialogTPtr                            = ^DialogTemplate;
  148.     DialogTHndl                            = ^DialogTPtr;
  149.     AlertTemplatePtr = ^AlertTemplate;
  150.     AlertTemplate = RECORD
  151.         boundsRect:                Rect;
  152.         itemsID:                SInt16;
  153.         stages:                    StageList;
  154.     END;
  155.  
  156.     AlertTPtr                            = ^AlertTemplate;
  157.     AlertTHndl                            = ^AlertTPtr;
  158. {  new type abstractions for the dialog manager  }
  159.     DialogItemIndexZeroBased            = SInt16;
  160.     DialogItemIndex                        = SInt16;
  161.     DialogItemType                        = SInt16;
  162. {  dialog manager callbacks  }
  163.     SoundProcPtr = ProcPtr;  { PROCEDURE Sound(soundNumber: SInt16); }
  164.  
  165.     SoundUPP = UniversalProcPtr;
  166.  
  167. CONST
  168.     uppSoundProcInfo = $00000080;
  169.  
  170. FUNCTION NewSoundProc(userRoutine: SoundProcPtr): SoundUPP;
  171.     {$IFC NOT GENERATINGCFM }
  172.     INLINE $2E9F;
  173.     {$ENDC}
  174.  
  175. PROCEDURE CallSoundProc(soundNumber: SInt16; userRoutine: SoundUPP);
  176.     {$IFC NOT GENERATINGCFM}
  177.     INLINE $205F, $4E90;
  178.     {$ENDC}
  179.  
  180. TYPE
  181.     ModalFilterProcPtr = ProcPtr;  { FUNCTION ModalFilter(theDialog: DialogRef; VAR theEvent: EventRecord; VAR itemHit: DialogItemIndex): BOOLEAN; }
  182.  
  183.     ModalFilterUPP = UniversalProcPtr;
  184.  
  185. CONST
  186.     uppModalFilterProcInfo = $00000FD0;
  187.  
  188. FUNCTION NewModalFilterProc(userRoutine: ModalFilterProcPtr): ModalFilterUPP;
  189.     {$IFC NOT GENERATINGCFM }
  190.     INLINE $2E9F;
  191.     {$ENDC}
  192.  
  193. FUNCTION CallModalFilterProc(theDialog: DialogRef; VAR theEvent: EventRecord; VAR itemHit: DialogItemIndex; userRoutine: ModalFilterUPP): BOOLEAN;
  194.     {$IFC NOT GENERATINGCFM}
  195.     INLINE $205F, $4E90;
  196.     {$ENDC}
  197.  
  198. TYPE
  199.     UserItemProcPtr = ProcPtr;  { PROCEDURE UserItem(theWindow: WindowRef; itemNo: DialogItemIndex); }
  200.  
  201.     UserItemUPP = UniversalProcPtr;
  202.  
  203. CONST
  204.     uppUserItemProcInfo = $000002C0;
  205.  
  206. FUNCTION NewUserItemProc(userRoutine: UserItemProcPtr): UserItemUPP;
  207.     {$IFC NOT GENERATINGCFM }
  208.     INLINE $2E9F;
  209.     {$ENDC}
  210.  
  211. PROCEDURE CallUserItemProc(theWindow: WindowRef; itemNo: DialogItemIndex; userRoutine: UserItemUPP);
  212.     {$IFC NOT GENERATINGCFM}
  213.     INLINE $205F, $4E90;
  214.     {$ENDC}
  215. {
  216.     NOTE: Code running under MultiFinder or System 7.0 or newer
  217.     should always pass NULL to InitDialogs.
  218. }
  219. PROCEDURE InitDialogs(ignored: UNIV Ptr);
  220.     {$IFC NOT GENERATINGCFM}
  221.     INLINE $A97B;
  222.     {$ENDC}
  223. PROCEDURE ErrorSound(soundProc: SoundUPP);
  224.     {$IFC NOT GENERATINGCFM}
  225.     INLINE $A98C;
  226.     {$ENDC}
  227. FUNCTION NewDialog(wStorage: UNIV Ptr; {CONST}VAR boundsRect: Rect; title: Str255; visible: BOOLEAN; procID: SInt16; behind: WindowRef; goAwayFlag: BOOLEAN; refCon: SInt32; itmLstHndl: Handle): DialogRef;
  228.     {$IFC NOT GENERATINGCFM}
  229.     INLINE $A97D;
  230.     {$ENDC}
  231. FUNCTION GetNewDialog(dialogID: SInt16; dStorage: UNIV Ptr; behind: WindowRef): DialogRef;
  232.     {$IFC NOT GENERATINGCFM}
  233.     INLINE $A97C;
  234.     {$ENDC}
  235. FUNCTION NewColorDialog(dStorage: UNIV Ptr; {CONST}VAR boundsRect: Rect; title: Str255; visible: BOOLEAN; procID: SInt16; behind: WindowRef; goAwayFlag: BOOLEAN; refCon: SInt32; items: Handle): DialogRef;
  236.     {$IFC NOT GENERATINGCFM}
  237.     INLINE $AA4B;
  238.     {$ENDC}
  239. PROCEDURE CloseDialog(theDialog: DialogRef);
  240.     {$IFC NOT GENERATINGCFM}
  241.     INLINE $A982;
  242.     {$ENDC}
  243. PROCEDURE DisposeDialog(theDialog: DialogRef);
  244.     {$IFC NOT GENERATINGCFM}
  245.     INLINE $A983;
  246.     {$ENDC}
  247. PROCEDURE ModalDialog(modalFilter: ModalFilterUPP; VAR itemHit: DialogItemIndex);
  248.     {$IFC NOT GENERATINGCFM}
  249.     INLINE $A991;
  250.     {$ENDC}
  251. FUNCTION IsDialogEvent({CONST}VAR theEvent: EventRecord): BOOLEAN;
  252.     {$IFC NOT GENERATINGCFM}
  253.     INLINE $A97F;
  254.     {$ENDC}
  255. FUNCTION DialogSelect({CONST}VAR theEvent: EventRecord; VAR theDialog: DialogRef; VAR itemHit: DialogItemIndex): BOOLEAN;
  256.     {$IFC NOT GENERATINGCFM}
  257.     INLINE $A980;
  258.     {$ENDC}
  259. PROCEDURE DrawDialog(theDialog: DialogRef);
  260.     {$IFC NOT GENERATINGCFM}
  261.     INLINE $A981;
  262.     {$ENDC}
  263. PROCEDURE UpdateDialog(theDialog: DialogRef; updateRgn: RgnHandle);
  264.     {$IFC NOT GENERATINGCFM}
  265.     INLINE $A978;
  266.     {$ENDC}
  267. PROCEDURE HideDialogItem(theDialog: DialogRef; itemNo: DialogItemIndex);
  268.     {$IFC NOT GENERATINGCFM}
  269.     INLINE $A827;
  270.     {$ENDC}
  271. PROCEDURE ShowDialogItem(theDialog: DialogRef; itemNo: DialogItemIndex);
  272.     {$IFC NOT GENERATINGCFM}
  273.     INLINE $A828;
  274.     {$ENDC}
  275. FUNCTION FindDialogItem(theDialog: DialogRef; thePt: Point): DialogItemIndexZeroBased;
  276.     {$IFC NOT GENERATINGCFM}
  277.     INLINE $A984;
  278.     {$ENDC}
  279. PROCEDURE DialogCut(theDialog: DialogRef);
  280. PROCEDURE DialogPaste(theDialog: DialogRef);
  281. PROCEDURE DialogCopy(theDialog: DialogRef);
  282. PROCEDURE DialogDelete(theDialog: DialogRef);
  283. FUNCTION Alert(alertID: SInt16; modalFilter: ModalFilterUPP): DialogItemIndex;
  284.     {$IFC NOT GENERATINGCFM}
  285.     INLINE $A985;
  286.     {$ENDC}
  287. FUNCTION StopAlert(alertID: SInt16; modalFilter: ModalFilterUPP): DialogItemIndex;
  288.     {$IFC NOT GENERATINGCFM}
  289.     INLINE $A986;
  290.     {$ENDC}
  291. FUNCTION NoteAlert(alertID: SInt16; modalFilter: ModalFilterUPP): DialogItemIndex;
  292.     {$IFC NOT GENERATINGCFM}
  293.     INLINE $A987;
  294.     {$ENDC}
  295. FUNCTION CautionAlert(alertID: SInt16; modalFilter: ModalFilterUPP): DialogItemIndex;
  296.     {$IFC NOT GENERATINGCFM}
  297.     INLINE $A988;
  298.     {$ENDC}
  299. PROCEDURE GetDialogItem(theDialog: DialogRef; itemNo: DialogItemIndex; VAR itemType: DialogItemType; VAR item: Handle; VAR box: Rect);
  300.     {$IFC NOT GENERATINGCFM}
  301.     INLINE $A98D;
  302.     {$ENDC}
  303. PROCEDURE SetDialogItem(theDialog: DialogRef; itemNo: DialogItemIndex; itemType: DialogItemType; item: Handle; {CONST}VAR box: Rect);
  304.     {$IFC NOT GENERATINGCFM}
  305.     INLINE $A98E;
  306.     {$ENDC}
  307. PROCEDURE ParamText(param0: Str255; param1: Str255; param2: Str255; param3: Str255);
  308.     {$IFC NOT GENERATINGCFM}
  309.     INLINE $A98B;
  310.     {$ENDC}
  311. PROCEDURE SelectDialogItemText(theDialog: DialogRef; itemNo: DialogItemIndex; strtSel: SInt16; endSel: SInt16);
  312.     {$IFC NOT GENERATINGCFM}
  313.     INLINE $A97E;
  314.     {$ENDC}
  315. PROCEDURE GetDialogItemText(item: Handle; VAR text: Str255);
  316.     {$IFC NOT GENERATINGCFM}
  317.     INLINE $A990;
  318.     {$ENDC}
  319. PROCEDURE SetDialogItemText(item: Handle; text: Str255);
  320.     {$IFC NOT GENERATINGCFM}
  321.     INLINE $A98F;
  322.     {$ENDC}
  323. FUNCTION GetAlertStage: SInt16;
  324.     {$IFC NOT GENERATINGCFM}
  325.     INLINE $3EB8, $0A9A;
  326.     {$ENDC}
  327. PROCEDURE SetDialogFont(value: SInt16);
  328.     {$IFC NOT GENERATINGCFM}
  329.     INLINE $31DF, $0AFA;
  330.     {$ENDC}
  331. PROCEDURE ResetAlertStage;
  332.     {$IFC NOT GENERATINGCFM}
  333.     INLINE $4278, $0A9A;
  334.     {$ENDC}
  335. PROCEDURE AppendDITL(theDialog: DialogRef; theHandle: Handle; method: DITLMethod);
  336. FUNCTION CountDITL(theDialog: DialogRef): DialogItemIndex;
  337. PROCEDURE ShortenDITL(theDialog: DialogRef; numberItems: DialogItemIndex);
  338. FUNCTION StdFilterProc(theDialog: DialogRef; VAR event: EventRecord; VAR itemHit: DialogItemIndex): BOOLEAN;
  339. FUNCTION GetStdFilterProc(VAR theProc: ModalFilterUPP): OSErr;
  340.     {$IFC NOT GENERATINGCFM}
  341.     INLINE $303C, $0203, $AA68;
  342.     {$ENDC}
  343. FUNCTION SetDialogDefaultItem(theDialog: DialogRef; newItem: DialogItemIndex): OSErr;
  344.     {$IFC NOT GENERATINGCFM}
  345.     INLINE $303C, $0304, $AA68;
  346.     {$ENDC}
  347. FUNCTION SetDialogCancelItem(theDialog: DialogRef; newItem: DialogItemIndex): OSErr;
  348.     {$IFC NOT GENERATINGCFM}
  349.     INLINE $303C, $0305, $AA68;
  350.     {$ENDC}
  351. FUNCTION SetDialogTracksCursor(theDialog: DialogRef; tracks: BOOLEAN): OSErr;
  352.     {$IFC NOT GENERATINGCFM}
  353.     INLINE $303C, $0306, $AA68;
  354.     {$ENDC}
  355. {$IFC OLDROUTINENAMES }
  356. PROCEDURE DisposDialog(theDialog: DialogRef);
  357.     {$IFC NOT GENERATINGCFM}
  358.     INLINE $A983;
  359.     {$ENDC}
  360. PROCEDURE UpdtDialog(theDialog: DialogRef; updateRgn: RgnHandle);
  361.     {$IFC NOT GENERATINGCFM}
  362.     INLINE $A978;
  363.     {$ENDC}
  364. PROCEDURE GetDItem(theDialog: DialogRef; itemNo: DialogItemIndex; VAR itemType: DialogItemType; VAR item: Handle; VAR box: Rect);
  365.     {$IFC NOT GENERATINGCFM}
  366.     INLINE $A98D;
  367.     {$ENDC}
  368. PROCEDURE SetDItem(theDialog: DialogRef; itemNo: DialogItemIndex; itemType: DialogItemType; item: Handle; {CONST}VAR box: Rect);
  369.     {$IFC NOT GENERATINGCFM}
  370.     INLINE $A98E;
  371.     {$ENDC}
  372. PROCEDURE HideDItem(theDialog: DialogRef; itemNo: DialogItemIndex);
  373.     {$IFC NOT GENERATINGCFM}
  374.     INLINE $A827;
  375.     {$ENDC}
  376. PROCEDURE ShowDItem(theDialog: DialogRef; itemNo: DialogItemIndex);
  377.     {$IFC NOT GENERATINGCFM}
  378.     INLINE $A828;
  379.     {$ENDC}
  380. PROCEDURE SelIText(theDialog: DialogRef; itemNo: DialogItemIndex; strtSel: SInt16; endSel: SInt16);
  381.     {$IFC NOT GENERATINGCFM}
  382.     INLINE $A97E;
  383.     {$ENDC}
  384. PROCEDURE GetIText(item: Handle; VAR text: Str255);
  385.     {$IFC NOT GENERATINGCFM}
  386.     INLINE $A990;
  387.     {$ENDC}
  388. PROCEDURE SetIText(item: Handle; text: Str255);
  389.     {$IFC NOT GENERATINGCFM}
  390.     INLINE $A98F;
  391.     {$ENDC}
  392. FUNCTION FindDItem(theDialog: DialogRef; thePt: Point): DialogItemIndexZeroBased;
  393.     {$IFC NOT GENERATINGCFM}
  394.     INLINE $A984;
  395.     {$ENDC}
  396. FUNCTION NewCDialog(dStorage: UNIV Ptr; {CONST}VAR boundsRect: Rect; title: Str255; visible: BOOLEAN; procID: SInt16; behind: WindowRef; goAwayFlag: BOOLEAN; refCon: SInt32; items: Handle): DialogRef;
  397.     {$IFC NOT GENERATINGCFM}
  398.     INLINE $AA4B;
  399.     {$ENDC}
  400. PROCEDURE DlgCut(theDialog: DialogRef);
  401. PROCEDURE DlgPaste(theDialog: DialogRef);
  402. PROCEDURE DlgCopy(theDialog: DialogRef);
  403. PROCEDURE DlgDelete(theDialog: DialogRef);
  404. PROCEDURE SetDAFont(fontNum: SInt16);
  405.     {$IFC NOT GENERATINGCFM}
  406.     INLINE $31DF, $0AFA;
  407.     {$ENDC}
  408. {$ENDC}
  409. {
  410. *****************************************************************************
  411. *                                                                           *
  412. * The conditional STRICT_DIALOGS has been removed from this interface file. *
  413. * The accessor macros to a DialogRecord are no longer necessary.            *
  414. *                                                                           *
  415. *****************************************************************************
  416.  
  417. Details:
  418. The original purpose of the STRICT_ conditionals and accessor macros was to
  419. help ease the transition to Copland.   Shared data structures are difficult
  420. to coordinate in a preemptive multitasking OS.  By hiding the fields in a
  421. WindowRecord and other data structures, we would begin the migration to 
  422. system data structures being completely hidden from applications. 
  423.  
  424. After many design reviews, it was finally concluded that with this sort of
  425. migration, the system could never tell when an application was no longer 
  426. peeking at a WindowRecord, and thus the data structure might never become 
  427. system owned.  Additionally, there were many other limitations in the classic
  428. toolbox that were begging to be addressed.
  429.  
  430. The final decision was to leave the traditional toolbox as a compatibility mode.
  431. The preferred toolbox API for Copland is a new SOM(tm) based architecture 
  432. (e.g. HIWindows.idl).  Windows, menu, controls, etc are each a SOM object 
  433. with methods for drawing, event handling, and customization.
  434.  
  435. }
  436. {$ENDC}
  437. {$IFC FOR_SYSTEM7_ONLY }
  438. PROCEDURE CouldDialog(dialogID: SInt16);
  439.     {$IFC NOT GENERATINGCFM}
  440.     INLINE $A979;
  441.     {$ENDC}
  442. PROCEDURE FreeDialog(dialogID: SInt16);
  443.     {$IFC NOT GENERATINGCFM}
  444.     INLINE $A97A;
  445.     {$ENDC}
  446. PROCEDURE CouldAlert(alertID: SInt16);
  447.     {$IFC NOT GENERATINGCFM}
  448.     INLINE $A989;
  449.     {$ENDC}
  450. PROCEDURE FreeAlert(alertID: SInt16);
  451.     {$IFC NOT GENERATINGCFM}
  452.     INLINE $A98A;
  453.     {$ENDC}
  454. {$ENDC}
  455. {$ALIGN RESET}
  456. {$POP}
  457.  
  458. {$SETC UsingIncludes := DialogsIncludes}
  459.  
  460. {$ENDC} {__DIALOGS__}
  461.  
  462. {$IFC NOT UsingIncludes}
  463.  END.
  464. {$ENDC}
  465.